package com.newjiabo.ski.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.newjiabo.common.annotation.Excel;
import com.newjiabo.common.core.domain.BaseEntity;

/**
 * 订单对象 ski_order
 *
 * @author CaoMengHui
 * @date 2023-09-22
 */
public class SkiOrder extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 订单id
     */
    private String orderId;

    /**
     * 商户订单号
     */
    @Excel(name = "商户订单号")
    private String outTradeNo;

    /**
     * 雪场id
     */
    @Excel(name = "雪场id")
    private String mealSnowId;

    /**
     * 雪场名称
     */
    @Excel(name = "雪场名称")
    private String mealSnowName;

    /**
     * 套餐id
     */
    @Excel(name = "套餐id")
    private String setMealId;

    /**
     * 套餐名称
     */
    @ApiModelProperty(value = "套餐名称")
    @Excel(name = "套餐名称")
    private String setMealName;

    /**
     * 更多服务id(用逗号分隔)
     */
    @Excel(name = "更多服务id(用逗号分隔)")
    private String moreServicesId;

    /**
     * 下单人id
     */
    @Excel(name = "下单人id")
    private String memberId;

    /**
     * 待支付、已支付、申请退款中、退款驳回、已退款
     * @see com.newjiabo.ski.domain.enums.OrderStatusEnum
     */
    @Excel(name = "待支付、已支付、申请退款中、退款驳回、已退款、已完成")
    private String orderStatus;

    /**
     * 支付总价格
     */
    @Excel(name = "支付总价格")
    private Double payTotal;

    /**
     * 支付订单号
     */
    @Excel(name = "支付订单号")
    private String payNo;

    /**
     * 商品原始价格
     */
    @Excel(name = "商品原始价格")
    private Double total;

    /**
     * 下单描述（body）
     */
    @Excel(name = "下单描述", readConverterExp = "b=ody")
    private String description;

    /**
     * 用户描述
     */
    @Excel(name = "用户描述")
    private String userDescription;

    /**
     * 下单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "下单时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date orderTime;

    /**
     * 付款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /**
     * 订单结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date orderEndTime;

    /**
     * 成片地址
     */
    @Excel(name = "成片地址")
    private String flakeUrl;

    /**
     * 删除标志 true/false 删除/未删除
     */
    private Boolean delFlag;

    /**
     * 媒资id(逗号分隔)
     */
    @Excel(name = "媒资id(逗号分隔)")
    private String mediaIds;

    /**
     * 媒资封面地址（逗号分隔）
     */
    @Excel(name = "媒资封面地址", readConverterExp = "逗=号分隔")
    private String mediaCoverUrl;

    @ApiModelProperty(value = "成品时长")
    private Float outputDuration;


    public SkiOrder() {
    }

    public SkiOrder(String orderId, String outTradeNo,
                    String mealSnowId,String mealSnowName, String setMealId,String setMealName,
                    String memberId, String orderStatus,
                    String description, String userDescription, Date orderTime,
                    String mediaIds,String mediaCoverUrl,Float outputDuration) {
        this.orderId = orderId;
        this.outTradeNo = outTradeNo;
        this.mealSnowId = mealSnowId;
        this.mealSnowName = mealSnowName;
        this.setMealId = setMealId;
        this.setMealName = setMealName;
        this.memberId = memberId;
        this.orderStatus = orderStatus;
        this.description = description;
        this.userDescription = userDescription;
        this.orderTime = orderTime;
        this.mediaIds = mediaIds;
        this.mediaCoverUrl = mediaCoverUrl;
        this.outputDuration = outputDuration;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String getOrderId() {
        return orderId;
    }

    public void setOutTradeNo(String outTradeNo) {
        this.outTradeNo = outTradeNo;
    }

    public String getOutTradeNo() {
        return outTradeNo;
    }

    public void setMealSnowId(String mealSnowId) {
        this.mealSnowId = mealSnowId;
    }

    public String getMealSnowId() {
        return mealSnowId;
    }

    public void setSetMealId(String setMealId) {
        this.setMealId = setMealId;
    }

    public String getSetMealId() {
        return setMealId;
    }

    public void setMoreServicesId(String moreServicesId) {
        this.moreServicesId = moreServicesId;
    }

    public String getMoreServicesId() {
        return moreServicesId;
    }

    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }

    public String getMemberId() {
        return memberId;
    }

    public void setOrderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getOrderStatus() {
        return orderStatus;
    }

    public void setPayTotal(Double payTotal) {
        this.payTotal = payTotal;
    }

    public Double getPayTotal() {
        return payTotal;
    }

    public void setPayNo(String payNo) {
        this.payNo = payNo;
    }

    public String getPayNo() {
        return payNo;
    }

    public void setTotal(Double total) {
        this.total = total;
    }

    public Double getTotal() {
        return total;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public void setUserDescription(String userDescription) {
        this.userDescription = userDescription;
    }

    public String getUserDescription() {
        return userDescription;
    }

    public void setOrderTime(Date orderTime) {
        this.orderTime = orderTime;
    }

    public Date getOrderTime() {
        return orderTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setOrderEndTime(Date orderEndTime) {
        this.orderEndTime = orderEndTime;
    }

    public Date getOrderEndTime() {
        return orderEndTime;
    }

    public void setFlakeUrl(String flakeUrl) {
        this.flakeUrl = flakeUrl;
    }

    public String getFlakeUrl() {
        return flakeUrl;
    }

    public Boolean getDelFlag() {
        return delFlag;
    }

    public void setDelFlag(Boolean delFlag) {
        this.delFlag = delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("orderId", getOrderId())
                .append("outTradeNo", getOutTradeNo())
                .append("mealSnowId", getMealSnowId())
                .append("setMealId", getSetMealId())
                .append("moreServicesId", getMoreServicesId())
                .append("memberId", getMemberId())
                .append("orderStatus", getOrderStatus())
                .append("payTotal", getPayTotal())
                .append("payNo", getPayNo())
                .append("total", getTotal())
                .append("description", getDescription())
                .append("userDescription", getUserDescription())
                .append("orderTime", getOrderTime())
                .append("payTime", getPayTime())
                .append("orderEndTime", getOrderEndTime())
                .append("flakeUrl", getFlakeUrl())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("delFlag", getDelFlag())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }

    public String getMediaIds() {
        return mediaIds;
    }

    public void setMediaIds(String mediaIds) {
        this.mediaIds = mediaIds;
    }

    public String getMediaCoverUrl() {
        return mediaCoverUrl;
    }

    public void setMediaCoverUrl(String mediaCoverUrl) {
        this.mediaCoverUrl = mediaCoverUrl;
    }

    public Float getOutputDuration() {
        return outputDuration;
    }

    public void setOutputDuration(Float outputDuration) {
        this.outputDuration = outputDuration;
    }

    public String getMealSnowName() {
        return mealSnowName;
    }

    public void setMealSnowName(String mealSnowName) {
        this.mealSnowName = mealSnowName;
    }

    public String getSetMealName() {
        return setMealName;
    }

    public void setSetMealName(String setMealName) {
        this.setMealName = setMealName;
    }
}
